﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Cysharp.Threading.Tasks;
using System.Threading;
using System;

public class Thirteen : MonoBehaviour
{
    public Button button;

    public float lastClick;

    private void Start()
    {
        // lastClick = Time.realtimeSinceStartup;
        //
        // button.onClick.AddListener(() =>
        // {
        //     NormlClick();
        // });

        CheckClickInternal(this.GetCancellationTokenOnDestroy()).Forget();
    }


    private void NormlClick()
    {
        // Time.time 的值是从游戏开始到现在的时间，单位是秒。
        // Time.realtimeSinceStartup 的值是从游戏开始到现在的时间，单位是秒。?????
        if (Time.realtimeSinceStartup - lastClick > 1f)
            Debug.Log("时间间隔超过1");
        else
            Debug.Log("时间间隔不超过1");
        lastClick = Time.realtimeSinceStartup;
    }


    public async UniTaskVoid CheckClickInternal(CancellationToken token)
    {
        while (true)
        {
            var FirstClick = button.OnClickAsync(token);
            await FirstClick;

            Debug.Log("1次点击");

            var SecondClick = button.OnClickAsync(token);
            //判断是单击还是双击 就是判断指定时间内是否又点击了  就是判断 第二次点击 和 等待1秒 发生的先后顺序
            //index 表示索引 可以认为是任务列表中的顺序索引
            var index = await UniTask.WhenAny(SecondClick, UniTask.Delay(TimeSpan.FromSeconds(1), cancellationToken: token));

            if (index == 0)
                Debug.Log("双击");
            else
                Debug.Log("时间间隔超过1");
        }
    }
}